home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 9
/
FM Towns Free Software Collection 9.iso
/
t_os
/
tool
/
vdgear
/
src
/
effect.c
< prev
next >
Wrap
Text File
|
1994-11-16
|
11KB
|
623 lines
/*
* VIDEO GEAR
* "effect.c"
* by Good-Chy
*/
#include "video.h"
int dx[2],dy[2],sx[2],sy[2];
int rnd[1200];
/******************************************************************************
* エフェクト
*/
/*
* NO.1 ストライプ 縦
*/
void stripe1(int f)
{
char *p1,*p2;
if (flag[f] == 2) /* 初期化 */
{
sx[f] = 0; sy[f] = 0;
dx[f] = 319; dy[f] = 239;
flag[f] = 3;
}
if (flag[f] == 3)
{
if (f == 0) /* クリア */
{
EGB_writePage(egb_work,1-f);
line(sx[f],sy[f],sx[f],dy[f],0x8000);
line(dx[f],sy[f],dx[f],dy[f],0x8000);
}
else /* ピクチャ-コピ- */
{
EGB_writePage(egb_work,0x80);
p1 = get_vram(32,sx[f],sy[f],sx[f],dy[f]);
p2 = get_vram(32,dx[f],sy[f],dx[f],dy[f]);
EGB_writePage(egb_work,1-f);
put_vram(p1,sx[f],sy[f],sx[f],dy[f]);
put_vram(p2,dx[f],sy[f],dx[f],dy[f]);
free(p1);
free(p2);
}
sx[f] += 2; dx[f] -= 2;
if (dx[f]<0) { flag[f] = 1; }
}
}
/*
* NO.2 ストライプ 横
*/
void stripe2(int f)
{
char *p1,*p2;
if (flag[f] == 2) /* 初期化 */
{
sx[f] = 0; sy[f] = 0;
dx[f] = 319; dy[f] = 239;
flag[f] = 3;
}
if (flag[f] == 3)
{
if (f == 0) /* クリア */
{
EGB_writePage(egb_work,1-f);
line(sx[f],sy[f],dx[f],sy[f],0x8000);
line(sx[f],dy[f],dx[f],dy[f],0x8000);
line(320,0,320,239,0x8000);
}
else /* ピクチャ-コピ- */
{
EGB_writePage(egb_work,0x80);
p1 = get_vram(32,sx[f],sy[f],dx[f],sy[f]);
p2 = get_vram(32,sx[f],dy[f],dx[f],dy[f]);
EGB_writePage(egb_work,1-f);
put_vram(p1,sx[f],sy[f],dx[f],sy[f]);
put_vram(p2,sx[f],dy[f],dx[f],dy[f]);
line(320,0,320,239,0x8000);
free(p1);
free(p2);
}
sy[f] += 2; dy[f] -= 2;
if (dy[f]<0) { flag[f] = 1; }
}
}
/*
* NO.3 ワイプアップ
*/
void wipe_up(int f)
{
char *p;
if (flag[f] == 2) /* 初期化 */
{
sy[f] = 239;
flag[f] = 3;
}
if (flag[f] == 3)
{
if (f == 0) /* クリア */
{
EGB_writePage(egb_work,1-f);
line(0,sy[f],319,sy[f],0x8000);
line(320,0,320,239,0x8000);
}
else /* ピクチャ-コピ- */
{
EGB_writePage(egb_work,0x80);
p = get_vram(32,0,sy[f],319,sy[f]);
EGB_writePage(egb_work,1-f);
put_vram(p,0,sy[f],319,sy[f]);
line(320,0,320,239,0x8000);
free(p);
}
sy[f]--;
if (sy[f]<0) { flag[f] = 1; }
}
}
/*
* NO.4 ズ-ムイン
*/
void zoom_in(int f)
{
char *p1,*p2,*p3,*p4;
if (flag[f] == 2) /* 初期化 */
{
sx[f] = 119; sy[f] = 119;
dx[f] = 200; dy[f] = 120;
flag[f] = 3;
}
if (flag[f] == 3)
{
if (f == 0) /* クリア */
{
EGB_paintMode(egb_work,2);
EGB_writePage(egb_work,1-f);
box_full(sx[f],sy[f],dx[f],dy[f],0x8000,0x8000,0);
}
else /* ピクチャ-コピ- */
{
EGB_writePage(egb_work,0x80);
p1 = get_vram(32,sx[f],sy[f],dx[f],sy[f]);
p2 = get_vram(32,dx[f],sy[f],dx[f],dy[f]);
p3 = get_vram(32,sx[f],dy[f],dx[f],dy[f]);
p4 = get_vram(32,sx[f],sy[f],sx[f],dy[f]);
EGB_writePage(egb_work,1-f);
put_vram(p1,sx[f],sy[f],dx[f],sy[f]);
put_vram(p2,dx[f],sy[f],dx[f],dy[f]);
put_vram(p3,sx[f],dy[f],dx[f],dy[f]);
put_vram(p4,sx[f],sy[f],sx[f],dy[f]);
free(p1);
free(p2);
free(p3);
free(p4);
}
sx[f]--; sy[f]--; dx[f]++; dy[f]++;
if (sx[f]<0) { flag[f] = 1; }
}
}
/*
* NO.5 バ-チカルオ-プン
*/
void verchcal_open(int f)
{
char *p1,*p2;
if (flag[f] == 2) /* 初期化 */
{
sx[f] = 159; dx[f] = 160;
flag[f] = 3;
}
if (flag[f] == 3)
{
if (f == 0) /* クリア */
{
EGB_writePage(egb_work,1-f);
line(sx[f],0,sx[f],239,0x8000);
line(dx[f],0,dx[f],239,0x8000);
}
else /* ピクチャ-コピ- */
{
EGB_writePage(egb_work,0x80);
p1 = get_vram(32,sx[f],0,sx[f],239);
p2 = get_vram(32,dx[f],0,dx[f],239);
EGB_writePage(egb_work,1-f);
put_vram(p1,sx[f],0,sx[f],239);
put_vram(p2,dx[f],0,dx[f],239);
free(p1);
free(p2);
}
sx[f]--; dx[f]++;
if (sx[f]<0) { flag[f] = 1; }
}
}
/*
* NO.6 ワイプダウン
*/
void wipe_down(int f)
{
char *p;
if (flag[f] == 2) /* 初期化 */
{
sy[f] = 0;
flag[f] = 3;
}
if (flag[f] == 3)
{
if (f == 0) /* クリア */
{
EGB_writePage(egb_work,1-f);
line(0,sy[f],319,sy[f],0x8000);
line(320,0,320,239,0x8000);
}
else /* ピクチャ-コピ- */
{
EGB_writePage(egb_work,0x80);
p = get_vram(32,0,sy[f],319,sy[f]);
EGB_writePage(egb_work,1-f);
put_vram(p,0,sy[f],319,sy[f]);
line(320,0,320,239,0x8000);
free(p);
}
sy[f]++;
if (sy[f]>240) { flag[f] = 1; }
}
}
/*
* NO.7 ズ-ムアウト
*/
void zoom_out(int f)
{
char *p1,*p2,*p3,*p4;
if (flag[f] == 2) /* 初期化 */
{
sx[f] = 0; sy[f] = 0;
dx[f] = 319; dy[f] = 239;
flag[f] = 3;
}
if (flag[f] == 3)
{
if (f == 0) /* クリア */
{
EGB_paintMode(egb_work,2);
EGB_writePage(egb_work,1-f);
box_full(sx[f],sy[f],dx[f],dy[f],0x8000,0x8000,0);
}
else /* ピクチャ-コピ- */
{
EGB_writePage(egb_work,0x80);
p1 = get_vram(32,sx[f],sy[f],dx[f],sy[f]);
p2 = get_vram(32,dx[f],sy[f],dx[f],dy[f]);
p3 = get_vram(32,sx[f],dy[f],dx[f],dy[f]);
p4 = get_vram(32,sx[f],sy[f],sx[f],dy[f]);
EGB_writePage(egb_work,1-f);
put_vram(p1,sx[f],sy[f],dx[f],sy[f]);
put_vram(p2,dx[f],sy[f],dx[f],dy[f]);
put_vram(p3,sx[f],dy[f],dx[f],dy[f]);
put_vram(p4,sx[f],sy[f],sx[f],dy[f]);
free(p1);
free(p2);
free(p3);
free(p4);
}
sx[f]++; sy[f]++; dx[f]--; dy[f]--;
if (sy[f]>120) { flag[f] = 1; }
}
}
/*
* NO.8 バ-チカルクロ-ズ
*/
void verchcal_close(int f)
{
char *p1,*p2;
if (flag[f] == 2) /* 初期化 */
{
sx[f] = 0; dx[f] = 319;
flag[f] = 3;
}
if (flag[f] == 3)
{
if (f == 0) /* クリア */
{
EGB_writePage(egb_work,1-f);
line(sx[f],0,sx[f],239,0x8000);
line(dx[f],0,dx[f],239,0x8000);
}
else /* ピクチャ-コピ- */
{
EGB_writePage(egb_work,0x80);
p1 = get_vram(32,sx[f],0,sx[f],239);
p2 = get_vram(32,dx[f],0,dx[f],239);
EGB_writePage(egb_work,1-f);
put_vram(p1,sx[f],0,sx[f],239);
put_vram(p2,dx[f],0,dx[f],239);
free(p1);
free(p2);
}
sx[f]++; dx[f]--;
if (sx[f]>160) { flag[f] = 1; }
}
}
/*
* NO.9 ワイプレフト
*/
void wipe_left(int f)
{
char *p;
if (flag[f] == 2) /* 初期化 */
{
sx[f] = 319;
flag[f] = 3;
}
if (flag[f] == 3)
{
if (f == 0) /* クリア */
{
EGB_writePage(egb_work,1-f);
line(sx[f],0,sx[f],239,0x8000);
}
else /* ピクチャ-コピ- */
{
EGB_writePage(egb_work,0x80);
p = get_vram(32,sx[f],0,sx[f],239);
EGB_writePage(egb_work,1-f);
put_vram(p,sx[f],0,sx[f],239);
free(p);
}
sx[f]--;
if (sx[f]<0) { flag[f] = 1; }
}
}
/*
* NO.10 ディゾルブ粗
*/
void dizorve1(int f)
{
int i, a,b,c;
char *p;
if (flag[f] == 2) /* 初期化 */
{
sx[f] = 299;
for (i=0 ; i<300 ; i++)
{ rnd[i] = i; }
for (i=0 ; i<2000 ; i++)
{
a = rand()%300;
b = rand()%300;
c = rnd[a];
rnd[a] = rnd[b];
rnd[b] = c;
}
flag[f] = 3;
}
if (flag[f] == 3)
{
a = rnd[sx[f]];
b = a/20;
c = a%20;
if (f == 0) /* クリア */
{
EGB_paintMode(egb_work,0x22);
EGB_writePage(egb_work,1-f);
box_full(c*16,b*16,c*16+15,b*16+15,0x8000,0x8000,0);
}
else /* ピクチャ-コピ- */
{
EGB_writePage(egb_work,0x80);
p = get_vram(32,c*16,b*16,c*16+15,b*16+15);
EGB_writePage(egb_work,1-f);
put_vram(p,c*16,b*16,c*16+15,b*16+15);
free(p);
}
sx[f]--;
if (sx[f]<0) { flag[f] = 1; }
}
}
/*
* NO.11 ホリゾンタルオ-プン
*/
void hrizontal_open(int f)
{
char *p1,*p2;
if (flag[f] == 2) /* 初期化 */
{
sy[f] = 119; dy[f] = 120;
flag[f] = 3;
}
if (flag[f] == 3)
{
if (f == 0) /* クリア */
{
EGB_writePage(egb_work,1-f);
line(0,sy[f],319,sy[f],0x8000);
line(0,dy[f],319,dy[f],0x8000);
line(320,0,320,239,0x8000);
}
else /* ピクチャ-コピ- */
{
EGB_writePage(egb_work,0x80);
p1 = get_vram(32,0,sy[f],319,sy[f]);
p2 = get_vram(32,0,dy[f],319,dy[f]);
EGB_writePage(egb_work,1-f);
put_vram(p1,0,sy[f],319,sy[f]);
put_vram(p2,0,dy[f],319,dy[f]);
line(320,0,320,239,0x8000);
free(p1);
free(p2);
}
sy[f]--; dy[f]++;
if (sy[f]<0) { flag[f] = 1; }
}
}
/*
* NO.12 ワイプライト
*/
void wipe_right(int f)
{
char *p;
if (flag[f] == 2) /* 初期化 */
{
sx[f] = 0;
flag[f] = 3;
}
if (flag[f] == 3)
{
if (f == 0) /* クリア */
{
EGB_writePage(egb_work,1-f);
line(sx[f],0,sx[f],239,0x8000);
}
else /* ピクチャ-コピ- */
{
EGB_writePage(egb_work,0x80);
p = get_vram(32,sx[f],0,sx[f],239);
EGB_writePage(egb_work,1-f);
put_vram(p,sx[f],0,sx[f],239);
free(p);
}
sx[f]++;
if (sx[f]>320) { flag[f] = 1; }
}
}
/*
* NO.13 ディゾルブ細
*/
void dizorve2(int f)
{
int i, a,b,c;
char *p;
if (flag[f] == 2) /* 初期化 */
{
sx[f] = 1199;
for (i=0 ; i<1200 ; i++)
{ rnd[i] = i; }
for (i=0 ; i<2000 ; i++)
{
a = rand()%1200;
b = rand()%1200;
c = rnd[a];
rnd[a] = rnd[b];
rnd[b] = c;
}
flag[f] = 3;
}
if (flag[f] == 3)
{
a = rnd[sx[f]];
b = a/40;
c = a%40;
if (f == 0) /* クリア */
{
EGB_paintMode(egb_work,0x22);
EGB_writePage(egb_work,1-f);
box_full(c*8,b*8,c*8+7,b*8+7,0x8000,0x8000,0);
}
else /* ピクチャ-コピ- */
{
EGB_writePage(egb_work,0x80);
p = get_vram(32,c*8,b*8,c*8+7,b*8+7);
EGB_writePage(egb_work,1-f);
put_vram(p,c*8,b*8,c*8+7,b*8+7);
free(p);
}
sx[f]--;
if (sx[f]<0) { flag[f] = 1; }
}
}
/*
* NO.11 ホリゾンタルクロ-ズ
*/
void hrizontal_close(int f)
{
char *p1,*p2;
if (flag[f] == 2) /* 初期化 */
{
sy[f] = 0; dy[f] = 239;
flag[f] = 3;
}
if (flag[f] == 3)
{
if (f == 0) /* クリア */
{
EGB_writePage(egb_work,1-f);
line(0,sy[f],319,sy[f],0x8000);
line(0,dy[f],319,dy[f],0x8000);
line(320,0,320,239,0x8000);
}
else /* ピクチャ-コピ- */
{
EGB_writePage(egb_work,0x80);
p1 = get_vram(32,0,sy[f],319,sy[f]);
p2 = get_vram(32,0,dy[f],319,dy[f]);
EGB_writePage(egb_work,1-f);
put_vram(p1,0,sy[f],319,sy[f]);
put_vram(p2,0,dy[f],319,dy[f]);
line(320,0,320,239,0x8000);
free(p1);
free(p2);
}
sy[f]++; dy[f]--;
if (sy[f]>120) { flag[f] = 1; }
}
}
/*
* NO.15 効果無し
*/
void nothing(int f)
{
char *p;
if (f == 0) /* クリア */
{
EGB_writePage(egb_work,1-f);
EGB_color(egb_work,1,0x8000);
EGB_clearScreen(egb_work);
}
else /* ピクチャ-コピ- */
{
EGB_writePage(egb_work,0x80);
p = get_vram(32,0,0,319,239);
EGB_writePage(egb_work,1-f);
put_vram(p,0,0,319,239);
free(p);
}
flag[f] = 1;
}